////构造函数中的异常
//#include <iostream>
//#include <cstdio>
//using namespace std;
//
//class A {
//public:
//	A() { cout << "A()被调用" << endl; }
//
//	~A() { cout << "~A()被调用" << endl; }
//};
//
//class C {
//public:
//	C():m_p(new int) {
//		//[A m_a;]定义m_a.A()
//		//[int* m_p = new int;] 定义m_p，初值指向一块堆内存[动态资源]
//		FILE* pfile = fopen("./cfg", "r");
//		if (!pfile) {
//			delete m_p;
//			//对于m_a.利用m_a.~A()
//			//释放m_a本身所占内存空间  将析构代码加到这里
//			throw - 1;
//		}
//		cout << "C()被调用" << endl;
//	}
//	~C() {
//		delete m_p;
//		cout << "~C()被调用" << endl;
//		//对于m_a.利用m_a.~A()
//		//释放m_a本身所占内存空间
//	}
//private:
//	A m_a;
//	int* m_p;
//};
//
//int main(void) {
//	try {
//		C c;//定义c，利用c.C();
//	
//		//...构造函数中后续代码...
//	}//如果c是完整构造对象，将利用c.~C()，但是如果c是残缺对象，就不会调用~C()
//	catch(...){
//
//	}
//
//	return 0;
//}